package main

import (
	"github.com/gin-gonic/gin"
)

//自定义gin-middleware, 第一种方式
func middlewareTest1(c *gin.Context) {

}

//自定义gin-middleware, 第二种方式
//推荐方式
func middlewareTest2() gin.HandlerFunc {
	return func(c *gin.Context) {
		//防低级爬虫, 判断referer
		ref := c.GetHeader("Referer")
		if ref == "" {
			c.AbortWithStatusJSON(200, gin.H{
				"msg": "非法访问",
			})
			return
		}
		c.Next()
	}
}

func main() {

	//创建一个 gin 的默认实例
	r := gin.Default()

	//两种自定义gin-middleware调用方式不同(写法)
	r.Use(middlewareTest1)
	r.Use(middlewareTest2())

	//匿名函数实现
	r.GET("/ping", func(c *gin.Context) {
		c.JSON(200, gin.H{
			"msg": "ok",
		})
	})

	//默认值为 8080
	//基于http, :port 进行修改
	r.Run(":8080")
}
